
package net.qiqbframework.messaging.annotation;


import net.qiqbframework.messaging.Message;

/**
 * 执行响应的 message handler 时，解析参数解析
 *
 * @param <T>
 */
public interface HandlerParameterResolver<T> {


    /**
     * 判断支持的参数类型
     *
     * @return
     */
    default Class<?> supportedPayloadType() {
        return Object.class;
    }

    /**
     * 进一步根据消息来判断是否支持此参数解析
     *
     * @param message 消息
     * @return false：不支持此消息；true：支持此消息
     */
    boolean support(Message<?> message);


    /**
     * 从消息里解析出对应的参数值
     *
     * @param message
     * @return
     */
    T resolveParameter(Message<?> message);

}
